엑셀 MATCH 함수는 범위 안에서 찾을 값의 위치 순번을 반환하는 함수입니다.
=MATCH(찾을값, 범위, [일치옵션])
- 범위는 반드시 단일행 또는 단일열이여야 합니다. (가로/세로로 긴 형태)
- 그렇지 않을 경우, MATCH 함수는 #N/A 오류를 반환합니다.
- 1 (또는 생략) : [기본값] 오름차순 정렬에서 찾을값보다 작은 값 중 가장 큰 값을 찾습니다.
- 0 : 정확히 일치
- -1 : 내림차순 정렬에서 찾을값보다 큰 값중 가장 작은 값을 찾습니다.
엑셀 MATCH 함수는 범위에서 지정한 값을 찾은 후, 해당 항목이 몇 번째 위치하는지 순번을 반환하는 함수입니다.
=MATCH("사과",{"배","귤","사과","포도","복숭아"}) / / 범위에서 사과의 순번인 '3'을 반환합니다.
MATCH 함수는 주로 INDEX 함수와 함께 사용되며, VLOOKUP 함수보다 유연하고 강력한 검색 기능을 구현할 수 있습니다.
=INDEX({100,200,300,400,500},3) / / 범위에서 3번째 값인 '300'을 반환합니다. =INDEX(가격범위,MATCH("사과",제품범위)) / / 제품 범위에서 "사과"를 찾아, 제품의 가격을 반환합니다.
INDEX/MATCH 공식의 동작 원리는 아래 기초 입문 강의에서 알기 쉽게 정리했으니 참고해주세요!😊
A2:A6 셀에 직원 이름이 작성된 경우, 아래 함수는 범위에서 김영희 직원의 위치 순번을 반환합니다.
=MATCH("정지웅",A2:A6,0) =MATCH("정지웅", {"김선지", "최상혁", "정지웅", "황호성", "전숙경"}, 0) / / 정지웅 직원의 위치 순번인 '3'을 반환합니다.
MATCH 함수는 와일드카드 검색을 지원합니다. 다음과 같이 함수를 작성하면, "상혁"으로 끝나는 직원 이름의 위치를 반환합니다.
=MATCH("*상혁", {"김선지", "최상혁", "정지웅", "황호성", "전숙경"}, 0) / / 상혁으로 끝나는 직원 이름의 위치 순번인 '2'를 반환합니다.
MATCH 함수의 일치 옵션을 활용하면, 작거나 같은 값 중 가장 큰 값을 검색할 수 있습니다. 아래 함수는 50,000 보다 작은 값 중, 가장 큰 값의 위치 순번을 반환합니다.
=MATCH(50000, {20000, 30000, 40000, 50000, 60000, 70000}, 1) / / 50000보다 작은 값 중 가장 큰 값의 순번인 '3'을 반환합니다.
MATCH함수가 잘못된 결과를 반환할 경우, 함수의 일치옵션을 확인합니다. 만약 1(작거나 같은 값) 또는 -1(크거나 같은 값)으로 설정한 경우, 범위는 반드시 오름차순 또는 내림차순으로 정렬되어야 합니다.
=MATCH(100,{128,90,82,87,164},1) / / 범위가 오름차순으로 정렬되지 않아, 잘못된 순번인 '4'를 반환합니다. =MATCH(100,{82,87,90,128,164},1) / / 100보다 작은 값 중 가장 큰 값인 90의 순번인 '3'을 반환합니다.
만약 찾을 값이 없거나 범위가 단일행 또는 단일열이 아닐 경우 함수는 #N/A 오류를 반환합니다.
일치 옵션을 1(작거나 값은 값) 또는 -1(크거나 값은 값)으로 설정한 경우, 범위는 반드시 오름차순 또는 내림차순으로 정렬해야 합니다.
찾을값이 문자이고, 일치옵션이 정확히일치(=0)일 경우에는 와일드카드(*,?,~)를 사용할 수 있습니다.
MATCH 함수는 찾은 값의 위치 순번을 반환합니다. 해당 순번의 실제 값을 얻으려면 INDEX 함수를 함께 사용합니다.
예를들어서
브랜드 이름 상품번호 색깔번호 이렇게 있을때
브랜드 이름과 상품번호를 매치시켜서 색깔번호를 가져올려면 어떻게 하면 좋을까요?
상품번호가 중복이 많아서
브랜드에 상품번호가 일치했을때 색깔번호를 가져올수 있는 함수가 필요 합니다 ㅠㅠ
https://www.oppadu.com/vlookup-%ed%95%a8%ec%88%98-%eb%8b%a4%ec%a4%91%ec%a1%b0%ea%b1%b4-%ea%b2%80%ec%83%89/
네 맞습니다. Match 함수는 가로로 긴 1행 또는 세로로 긴 1열 대상으로만 올바르게 동작합니다. :)
넓은 배열을 범위로 입력하면 오류가 발생합니다.
아쉽게도 INDRECT 함수로는 동적범위를 참조할 수 없습니다. INDIRECT 함수로 동적범위를 참조하시려면, 표 기능을 사용하셔야 합니다.
=INDIRECT("표이름[필드명]")
으로 입력해서 사용해보세요.감사합니다!
한 셀에 여러 텍스트가 입력된 경우에 MATCH함수를 사용하기 위해 와일드카드 *를 사용할 때,
예를 들어 참조 범위에 "인도"와 "인도네시아"가 있는 경우, '인도'를 찾기 위해 인수로 "*"&인도&"*"를 입력할 경우 '인도네시아'를 찾아버리는 문제를 해결하고 싶은데 뾰족한 수가 없습니다 ㅠㅠ
말씀하신 내용은 로직상 인도, 인도네시아가 모두 검색되는 것이 맞습니다.
인도만 검색하려면 찾을 값으로 "인도"만 검색하셔야 합니다.^^
IF 함수로 정확히 일치할 경우, 포함할 경우를 나누어 검색되도록 함수를 작성해보세요.
아래와 같이 사용해보세요.
예를 들면
노란색 파란색 기타색 이라는 데이터에서 초록색이라는 글자를 찾으려 할때 이건 3번째 값인 기타색으로 가야하잖아요.
그러면 =match("초록",--({"노란색","파란색","기타색"}<>"초록색"),0) 이렇게 해야한다는 소린가요? <<이렇게 해봤으나 안되긴 했음..ㅜㅜ
아래 강의를 참고해서 수식을 수정해보시길 바랍니다.
https://www.oppadu.com/%ec%a7%84%ec%a7%9c%ec%93%b0%eb%8a%94-%ec%8b%a4%eb%ac%b4%ec%97%91%ec%85%80-7-5-4/